Nekompatibilní parametr typu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Nekompatibilní parametr typu – C / C++ – Fórum – Programujte.comNekompatibilní parametr typu – C / C++ – Fórum – Programujte.com

 

Spuštěný nový filmový web Filmožrouti.cz — vše o Avengers, Pacific Rim, Thor, Star Wars…
Kevil0
Návštěvník
6. 1. 2019   #1
-
0
-

Chtěl bych vykoušet ukázkový příklad CUDA accelerated(X) Multi-Precision library viz odkaz zde

Na řádcích za //import a //export ale dostávám chybové hlášení:

Argument typu "uint32_t *" je nekompatibilní s parametrem typu "uint32_t"

Co s tím ?

#include "xmp.h"
#include <stdio.h>
#include <stdlib.h>
#include <C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include\cuda_runtime_api.h>

#define XMP_CHECK_ERROR(fun) \
{                             \
  xmpError_t error=fun;     \
  if(error!=xmpErrorSuccess){ \
    if(error==xmpErrorCuda)   \
      printf("CUDA Error %s, %s:%d\n",cudaGetErrorString(cudaGetLastError()),__FILE__,__LINE__); \
    else  \
      printf("XMP Error %s, %s:%d\n",xmpGetErrorString(error),__FILE__,__LINE__); \
    exit(EXIT_FAILURE); \
  } \
}
int main() {
	int i, w;
	int N = 10000;
	int bits = 1024;
	xmpIntegers_t base, mod, exp, out;
	uint32_t *b, *m, *e, *o;
	uint32_t limbs = bits / 8 / sizeof(uint32_t);

	size_t bytes = N * bits / 8;
	b = (uint32_t*)malloc(bytes);
	o = (uint32_t*)malloc(bytes);
	m = (uint32_t*)malloc(bits / 8);
	e = (uint32_t*)malloc(bits / 8);

	xmpHandle_t handle;

	//allocate handle
	XMP_CHECK_ERROR(xmpHandleCreate(&handle));

	//allocate integers
	XMP_CHECK_ERROR(xmpIntegersCreate(handle, &base, bits, N));
	XMP_CHECK_ERROR(xmpIntegersCreate(handle, &out, bits, N));
	XMP_CHECK_ERROR(xmpIntegersCreate(handle, &exp, bits, 1));
	XMP_CHECK_ERROR(xmpIntegersCreate(handle, &mod, bits, 1));

	//initialize base, exp, and mod
	for (i = 0; i < N; i++) {
		for (w = 0; w < limbs; w++) {
			b[i*limbs + w] = rand();
		}
	}

	for (w = 0; w < limbs; w++) {
		m[w] = rand();
		e[w] = rand();
	}
	//make sure modulus is odd
	m[0] |= 1;

	//import
	XMP_CHECK_ERROR(xmpIntegersImport(handle, base, N, limbs, -1, sizeof(uint32_t), 0, 0, b));
	XMP_CHECK_ERROR(xmpIntegersImport(handle, exp, 1, limbs, -1, sizeof(uint32_t), 0, 0, e));
	XMP_CHECK_ERROR(xmpIntegersImport(handle, mod, 1, limbs, -1, sizeof(uint32_t), 0, 0, m));

	//call powm
	XMP_CHECK_ERROR(xmpIntegersPowm(handle, out, base, exp, mod, N));

	//export
	XMP_CHECK_ERROR(xmpIntegersExport(handle, o, N, &limbs, -1, sizeof(uint32_t), 0, 0, out));

	//use results here

	//free integers
	XMP_CHECK_ERROR(xmpIntegersDestroy(handle, base));
	XMP_CHECK_ERROR(xmpIntegersDestroy(handle, out));
	XMP_CHECK_ERROR(xmpIntegersDestroy(handle, exp));
	XMP_CHECK_ERROR(xmpIntegersDestroy(handle, mod));

	//free handle
	XMP_CHECK_ERROR(xmpHandleDestroy(handle));

	free(b);
	free(o);
	free(m);
	free(e);

	printf("done\n");
	return 0;
}
Nahlásit jako SPAM
IP: 89.177.163.–
gna
~ Anonymní uživatel
771 příspěvků
6. 1. 2019   #2
-
0
-

Na tom odkazu jsou parametry ve správném pořadí. Netuším, jak jsi vyrobil tohle.

Nahlásit jako SPAM
IP: 213.211.51.–
Kevil0
Návštěvník
6. 1. 2019   #3
-
0
-

#2 gna
Nerozumím tvé odpovědi, v kódu jsem nic neměnil (je zkopírován z konce souboru xmp.docx v adresáři xmp/docs/ z odkazu výše) a přesto to hlásí výše zmíněné chyby.

Nahlásit jako SPAM
IP: 89.177.163.–
MilanL+1
Věrný člen
6. 1. 2019   #4
-
0
-

ahoj, hm zas něco zkoušíš? koukal jsem na to nemáš přehozený argumenty? v dokumentaci je size_t jako 5 argument a ty ho máš jako 6

Nahlásit jako SPAM
IP: 185.112.167.–
Kevil0
Návštěvník
7. 1. 2019   #5
-
0
-

#4 MilanL
Chtěl bych zkusit hledání velkých prvočísel. Našel jsem ale tip, jak na to celkem jednoduše. Vydám se asi cestou svých zkušeností s alokací několika GB paměti a x64 assembleru. Nebude to legrace pracovat s čísly, která mají více než 24 milionů číslic. P.S. Poslední nalezené provočíslo se vejde do 10 323 742 bytů.

Viz článek zde

Nahlásit jako SPAM
IP: 89.177.163.–
gna
~ Anonymní uživatel
771 příspěvků
7. 1. 2019   #6
-
0
-
Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Věrný člen
7. 1. 2019   #7
-
0
-

#6 gna
jj to jsem psal, že tam má přehozený argumenty, v podstatě ten 3. argument má být na konci v tom sample je to vidět když si zkoukne ty 3 řádky.

Nahlásit jako SPAM
IP: 91.139.9.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 65 hostů

Podobná vlákna

Parametr typu reference — založil tomas_prokop

Textový parametr — založil don_Dominique

Parametr funkce — založil Jmeno

Pointer - výstupní parametr — založil radek-46

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý