все. Я пытаюсь оптимизировать свое ядро CUDA.
Я пытался сравнить все образцы со всеми сигнатурами (в основном проблема с рукопожатием).
В настоящее время я получаю доступ к массиву образцов и сигнатур в объединенный путь? Я не могу многое ссылаться на эту страницу, так как мой код не обращается к 2D-матрице.
(Объединенный доступ CUDA для двумерного блока)
Также в конце ядра Есть ли способ объединить мое чтение?
Спасибо всем за вашу любезную помощь. Впервые пишу на форуме. Если что-то не так с публикацией, сообщите мне.
Код приведен ниже
__global__ void matchKernel(const KSeqGPU* samples, const KSeqGPU* signatures, MatchResultGPU* matches, int numSamples, int numSignatures) {
// (0,0) (0,1) (0,2) ... (0,signature_count)
// (1,0) (1,1) (1,2) ... (1,signature_count)
// ...
// (sample_count,0) (sample_count,1) ... (sample_count,signature_count)
int sampleIdx = blockIdx.x * blockDim.x + threadIdx.x; // Column
int sigIdx = blockIdx.y * blockDim.y + threadIdx.y; // Row
if (sampleIdx < numSamples && sigIdx < numSignatures) {
const KSeqGPU& sample = samples[sampleIdx];
const KSeqGPU& signature = signatures[sigIdx];
// Check if the sample is long enough to contain the signature
if (sample.seq_len < signature.seq_len) {
return;
}
// Check if the sample contains the signature
for (int i = 0; i < sample.seq_len - signature.seq_len + 1; i++) {
bool matchFound = true;
for (int j = 0; j < signature.seq_len; j++) {
// If the character does not match, break
// Also consider wildcard
if (sample.seq[i + j] != signature.seq[j] && signature.seq[j] != 'N' && sample.seq[i + j] != 'N') {
matchFound = false;
break;
}
}
if (matchFound) {
float matchConfidence = calculateMatchConfidence(sample.qual, i, signature.seq_len);
matches[sampleIdx * numSignatures + sigIdx] = MatchResultGPU(sampleIdx, sigIdx, matchConfidence);
return;
}
}
matches[sampleIdx * numSignatures + sigIdx] = MatchResultGPU(-1, -1, 0);
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... 2d-threads
CUDA объединил доступ с вектором 2 1d. Конфигурация — 2d-блок и 2d-потоки. ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
CUDA ON DEBIAN TRIXIE: версия драйвера CUDA недостаточно для версии времени выполнения CUDA
Anonymous » » в форуме Linux - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Hibernate 6 объединил производительность запросов наследования по сравнению с Hibernate 5
Anonymous » » в форуме JAVA - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Hibernate 6 объединил производительность запросов наследования по сравнению с Hibernate 5
Anonymous » » в форуме JAVA - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-