صفحه 2 از 2 اولاول 12
نمایش نتایج 41 تا 47 از 47

نام تاپیک: انجام تنظیمات برای پذیرش آرایه های بزرگ مقیاس در VS C++‎ 2010

  1. #41
    کاربر دائمی آواتار مصطفی ساتکی
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    www.7khatcode.com
    پست
    1,193

    نقل قول: انجام تنظیمات برای پذیرش آرایه های بزرگ مقیاس در VS C++‎ 2010

    کرنل در واقع همون کد parallel هستش که تحت قالب یک function می نویسید که تو آن متغیر های intrinsic مربوط به گرید از جمله blockID و threadID هستش که شما با این ساختار می تونید به حافظه به صورت چند بعدی دسترسی داشته باشید.
    ماهیت کار بایستی به صورت موازی باشه که طرف بخاد از gpu استفاده کنه به یک مثال بگم شما میخاید لیست از feature ها رو آموزش بدید و کلاسیفیر شما رو gpu هستش حالا اگر اندازه feature ها کوچک باشه این انتقال داده از سمت cpu یا host به سمت device یا gpu مقرون به صرفه نیست چون شما داده رو ram دارید حالا بایستی که بایستی هی cumalloc کنید و هی cumemcpy همون طور هم خودتون می تونید هر جفتش زمان گیره بجز اینکه راهی پیدا کنید که داده ها را به صورت bulck انتقال بدید و سمت gpu پروسس کنید که باز هم به طبیعت مسئله بستگی داره.

  2. #42

    نقل قول: انجام تنظیمات برای پذیرش آرایه های بزرگ مقیاس در VS C++‎ 2010

    خب تیکه تیکه بگیر دیگه این انداره ک شما می خوای نمیشه گرفت
    اون کدی ک دادمو نکا کن ببین بدرت می خوره یا نه

  3. #43

    نقل قول: انجام تنظیمات برای پذیرش آرایه های بزرگ مقیاس در VS C++‎ 2010

    نقل قول نوشته شده توسط __UFNHGGI_H__ مشاهده تاپیک
    کد رو بزار
    اون خطا واس اینه ک حالت استاتیک حافظه گرفتی و حجمش زیاد هست
    96*380*380 تا دابل میشه 110 مگ . خیلی خیلی زیاده
    بیشتر از 16 مگ نگیری بهتره چون تا هردفعه ک برنامه رو اجرا می کنی ممکنه اون قدر فضای خالی پیدا نشه .
    می تونی از چند تا ارایه استفاده کنی عوض اینکه یهو کلی فضا بگیری
    اینطوری

    #define HEAPSIZE 256000
    #define ALLOCKCOUNT 8192

    double* arr[ALLOCKCOUNT];
    for(int i = 0; i < ALLOCKCOUNT; i++)
    arr[i] = new double[HEAPSIZE];

    double GetItem(int index)
    {
    return arr[index/HEAPSIZE][index % HEAPSIZE];
    }


    double a = GetItem(1231231);
    دوست عزیز یه خورده درمورد کدتون توضیح میدین؟
    اون فضایی رو که من می خوام در دسترس قرار میده؟
    من 66 تا مشتق جزیی دارم که هرکدوم آرایه 380*380*96 میخواد
    الان کدتون همچین فضایی برای من درست می کنه؟

  4. #44

    نقل قول: انجام تنظیمات برای پذیرش آرایه های بزرگ مقیاس در VS C++‎ 2010

    نقل قول نوشته شده توسط __UFNHGGI_H__ مشاهده تاپیک
    خب تیکه تیکه بگیر دیگه این انداره ک شما می خوای نمیشه گرفت
    اون کدی ک دادمو نکا کن ببین بدرت می خوره یا نه
    دوست عزیز یه خورده درمورد کدتون توضیح میدین؟
    اون فضایی رو که من می خوام در دسترس قرار میده؟
    من 66 تا مشتق جزیی دارم که هرکدوم آرایه 380*380*96 میخواد
    الان کدتون همچین فضایی برای من درست می کنه؟
    عصبانی نباشید تروخدا.
    اساتید دانشگاهم اگر بخوان انقدر زود داغ کنن که فاتحه هرچی دانشجو خونده س.
    حالا بگذریم از ستاره شناسا که سال ها روی یه موضوعی هی تحقیق می کنن
    اندکی صبر سحر نزدیک است

  5. #45
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: انجام تنظیمات برای پذیرش آرایه های بزرگ مقیاس در VS C++‎ 2010

    یافتم
    const int nx = DATAXSIZE;
    توی پست اولم هم گفتم که از size_t استفاده کنید.
    در ضمن بهتره از malloc استفاده نکنید چون فقط سرعتتون رو میاره پایین.

  6. #46

    نقل قول: انجام تنظیمات برای پذیرش آرایه های بزرگ مقیاس در VS C++‎ 2010

    اره
    اینطوری هر چقدر ک می خوای میشه
    الان من تو این کد 380 تا جدا جدا حافظه گرفتم ک هر کدوم 36480 تا دابل هست .
    فقط کافیه از این دو تا تابع برا مقدار دهی و مقدار دادن استفاده کنی همین .

    #define HEAPSIZE (380*96)
    #define ALLOCKCOUNT 380

    double* arr[ALLOCKCOUNT];
    for(int i = 0; i < ALLOCKCOUNT; i++)
    arr[i] = new double[HEAPSIZE];

    double GetVal(int index)
    {
    return arr[index/HEAPSIZE][index % HEAPSIZE];
    }
    void SetVal(int index, double val)
    {
    arr[index/HEAPSIZE][index % HEAPSIZE] = val;
    }


  7. #47
    کاربر دائمی آواتار FastCode
    تاریخ عضویت
    تیر 1388
    محل زندگی
    /dev/null
    پست
    3,486

    نقل قول: انجام تنظیمات برای پذیرش آرایه های بزرگ مقیاس در VS C++‎ 2010

    نقل قول نوشته شده توسط __UFNHGGI_H__ مشاهده تاپیک
    اره
    اینطوری هر چقدر ک می خوای میشه
    الان من تو این کد 380 تا جدا جدا حافظه گرفتم ک هر کدوم 36480 تا دابل هست .
    فقط کافیه از این دو تا تابع برا مقدار دهی و مقدار دادن استفاده کنی همین .

    #define HEAPSIZE (380*96)
    #define ALLOCKCOUNT 380

    double* arr[ALLOCKCOUNT];
    for(int i = 0; i < ALLOCKCOUNT; i++)
    arr[i] = new double[HEAPSIZE];

    double GetVal(int index)
    {
    return arr[index/HEAPSIZE][index % HEAPSIZE];
    }
    void SetVal(int index, double val)
    {
    arr[index/HEAPSIZE][index % HEAPSIZE] = val;
    }

    این کار غیر ممکنه.
    به این دلیل:
        CUDA_CHECK_RETURN(cudaMalloc((void**) &devBuffer, BUFFER_SIZE))
    CUDA_CHECK_RETURN(
    cudaMemcpy(devBuffer, hostBuffer, BUFFER_SIZE, cudaMemcpyHostToDevice));

    آخرین ویرایش به وسیله FastCode : چهارشنبه 08 خرداد 1392 در 21:49 عصر

صفحه 2 از 2 اولاول 12

تاپیک های مشابه

  1. مبتدی: اجرا کردن و انجام تنظیمات برای برنامه تحت ویندوز
    نوشته شده توسط mehrdad85 در بخش C#‎‎
    پاسخ: 8
    آخرین پست: چهارشنبه 03 خرداد 1391, 09:10 صبح
  2. سوال: تعریف آرایه های بزرگ
    نوشته شده توسط mahdi bg در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: شنبه 18 خرداد 1387, 00:29 صبح
  3. انجام پروژه برای شرکت های خارجی
    نوشته شده توسط akbaro در بخش C#‎‎
    پاسخ: 2
    آخرین پست: سه شنبه 10 اردیبهشت 1387, 06:40 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •