When I run the following kernel, it gives the same error.
__device__ void levenshteinDistance(int srcLength,char *patternRemoved, int distinctStart, int distinctEnd,char *pattern,int clStart,int clEnd, char *src,int *srcIndices, int strucStart, int strucEnd,int tokensStrucStart,int tokensStrucEnd,int tokensClStart,int tokensClEnd,int wordsClStart,int wordsClEnd,int wordsStrucStart,int wordsStrucEnd,int wordsTokensClStart,int wordsTokensClEnd, int wordsTokensStrucStart, int wordsTokensStrucEnd,int *dX,int *ResultFinal,float *TokensFinal,float *WordsTokensFinal1,float *WordsTokensFinal2,float *WordsFinal1,float *WordsFinal2,float *WordsFinal)
{
for (int i = distinctStart; i < distinctEnd; i++) {
for (int j = strucStart; j < strucEnd; j++) {
if (src.charAt(j) == ',')
dX[i * srcLength + j] = 0;
else
{
if (src.charAt(j) == patternRemoved.charAt(i))
dX[i * srcLength + j] = srcIndices[j];
else if (src.charAt(j) != patternRemoved.charAt(i))
dX[i * srcLength + j] = dX[i * srcLength + j-1];
}
}
}
}
extern "C"
__global__ void ComputationdStructureOnGPUSerial(int srcLength,int numTokenSrc, int srcSructuresNum, int srcWordNum, char *src,int *srcStructuresSFIndices, int *srcIndices,int *srcStructureTokensSFIndices, int *srcStartIndices, int *srcStructureWordsSFIndices,int *srcStructureWordstokensSFIndices,int *srcTokensLengths,int totalLengthDistinct, char *patternRemoved, int *distinctSFIndices,int patternLength,int numPatternToken,int patternClustersNum,int patternWordNum,char *pattern, int *patternClustersSFIndices,int *patternIndices,int *patternTokensSFIndices,int *patternStartIndices,int *PatternWordsSFIndices,int *PatternWordstokensSFIndices,int *patternTokensLengths, int *dX,int *ResultFinal,float *TokensFinal,float *WordsTokensFinal1,float *WordsTokensFinal2,float *WordsFinal1,float *WordsFinal2,float *WordsFinal)
{
int ix = blockIdx.x * blockDim.x + threadIdx.x;
int distinctStart,distinctEnd,clStart,clEnd,strucStart,strucEnd,tokensStrucStart,tokensStrucEnd,tokensClStart,tokensClEnd,wordsClStart,wordsClEnd,wordsStrucStart,wordsStrucEnd,wordsTokensClStart,wordsTokensClEnd,wordsTokensStrucStart,wordsTokensStrucEnd;
if(ix<patternClustersNum){
distinctStart = distinctSFIndices[ix];
distinctEnd = distinctSFIndices[ix+1];
clStart = patternClustersSFIndices[ix];
clEnd = patternClustersSFIndices[ix+1];
strucStart = srcStructuresSFIndices[ix];
strucEnd = srcStructuresSFIndices[ix+1];
tokensStrucStart = srcStructureTokensSFIndices[ix];
tokensStrucEnd = srcStructureTokensSFIndices[ix+1];
tokensClStart = patternTokensSFIndices[ix];
tokensClEnd = patternTokensSFIndices[ix+1];
wordsClStart = PatternWordsSFIndices[ix];
wordsClEnd = PatternWordsSFIndices[ix+1];
wordsStrucStart = srcStructureWordsSFIndices[ix];
wordsStrucEnd = srcStructureWordsSFIndices[ix+1];
wordsTokensClStart = PatternWordstokensSFIndices[ix];
wordsTokensClEnd = PatternWordstokensSFIndices[ix+1];
wordsTokensStrucStart = srcStructureWordstokensSFIndices[ix];
wordsTokensStrucEnd = srcStructureWordstokensSFIndices[ix+1];
levenshteinDistance(srcLength,patternRemoved, distinctStart, distinctEnd,pattern,clStart,clEnd, src,srcIndices,strucStart, strucEnd,tokensStrucStart,tokensStrucEnd,tokensClStart,tokensClEnd,wordsClStart,wordsClEnd,wordsStrucStart,wordsStrucEnd,wordsTokensClStart,wordsTokensClEnd,wordsTokensStrucStart,wordsTokensStrucEnd,dX,ResultFinal,TokensFinal,WordsTokensFinal1,WordsTokensFinal2,WordsFinal1,WordsFinal2,WordsFinal);
}
}
it gives the following error:
Executing
nvcc -m64 -ptx D:\NetBeanProjects\OntologyThresholdSerial2023Test\src\ontologythresholdserial2023test\OntologyThresholdSerial2023.cu -o D:\NetBeanProjects\OntologyThresholdSerial2023Test\src\ontologythresholdserial2023test\OntologyThresholdSerial2023.ptx
nvcc process exitValue 1
errorMessage:
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(6): error: expression must have class type
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(10): error: expression must have class type
Exception in thread “main” java.io.IOException: Could not create .ptx file: D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(6): error: expression must have class type
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(10): error: expression must have class type
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(10): error: expression must have class type
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(12): error: expression must have class type
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(10): error: expression must have class type
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(12): error: expression must have class type
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(12): error: expression must have class type
5 errors detected in the compilation of “C:/Users/COMPUT~1/AppData/Local/Temp/tmpxft_00001b9c_00000000-10_OntologyThresholdSerial2023.cpp1.ii”.
outputMessage:
OntologyThresholdSerial2023.cu
D:/NetBeanProjects/OntologyThresholdSerial2023Test/src/ontologythresholdserial2023test/OntologyThresholdSerial2023.cu(12): error: expression must have class type
5 errors detected in the compilation of “C:/Users/COMPUT~1/AppData/Local/Temp/tmpxft_00001b9c_00000000-10_OntologyThresholdSerial2023.cpp1.ii”.
at ontologythresholdserial2023test.ParallelLevenstein.preparePtxFile(ParallelLevenstein.java:130)
at ontologythresholdserial2023test.ParallelLevenstein.<init>(ParallelLevenstein.java:79)
at ontologythresholdserial2023test.OntologyThresholdSerial2023Test.main(OntologyThresholdSerial2023Test.java:426)
D:\NetBeanProjects\OntologyThresholdSerial2023Test\nbproject\build-impl.xml:1355: The following error occurred while executing this line:
D:\NetBeanProjects\OntologyThresholdSerial2023Test\nbproject\build-impl.xml:961: Java returned: 1
BUILD FAILED (total time: 3 seconds)
the error : error: expression must have class type, it is from src.charAt(j) because it is defined as a pointer in the device function. When I search for the error,
it needs the object not the pointer. how to solve this, please?
Knowing that I have used src.charAt(j) inside global function in another kernel, it succeeds.
extern “C”
global void ComputationdStructureOnGPUParallel