At first you need to install the OpenCL libraries and other files. AMD has for CPU's and their GPU's AMD APP: http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/downloads/. Intel has their OpenCL libraries at http://software.intel.com/en-us/vcsource/tools/opencl-sdk. And Nvidia has everything at https://developer.nvidia.com/cuda-downloads. In some cases the graphic drivers already include all the files you need. I recommend that you continue with the next step and if anything will go wrong return to this step and install the needed OpenCL SDK toolkits.
We will program in C++11. To ease everything we will use OpenCL C++ binding 1.1 from www.khronos.org/registry/cl/api/1.1/cl.hpp . manual for this binding is available at www.khronos.org/registry/cl/specs/opencl-cplusplus-1.1.pdf. It might happen that cl.hpp is already installed at your computer. If not then simply download C++ binding to folder of your project. Don't forget to turn on the C++11. In case of QtCreator add next line into the .pro file:
QMAKE_CXXFLAGS += -std=c++0xAlso don't forget to use OpenCL library. In case of QtCreator add next line into the .pro file:
LIBS+= -lOpenCLIf you get any errors you need to adjust system variable to point to folder of OpenCL installation. You can also manually set path to OpenCL library path:
LIBS+= -Lpath_to_openCL_librariesOr you can simply write hard-coded path to OpenCL library:
LIBS+=/usr/.../libOpenCL.soLet's start with coding. We will create simple console program which will use OpenCL to sum two arrays like C=A+B. For our simple sample we will need only two headers:
#include <iostream> #include <CL/cl.hpp>Everything else will happen inside main function. At start we need to get one of the OpenCL platforms. This is actually a driver you had previously installed. So platform can be from Nvidia, Intel, AMD....
int main(){ //get all platforms (drivers) std::vector<cl::Platform> all_platforms; cl::Platform::get(&all_platforms); if(all_platforms.size()==0){ std::cout<<" No platforms found. Check OpenCL installation!\n"; exit(1); } cl::Platform default_platform=all_platforms[0]; std::cout << "Using platform: "<<default_platform.getInfo<CL_PLATFORM_NAME>()<<"\n";
Once we selected the first platform (default_platform) we will use it in the next steps. Now we need to get device of our platform. For example AMD's platform has support for multiple devices (CPU's and GPU's). We will now select the first device (default_device):
//get default device of the default platform std::vector<cl::Device> all_devices; default_platform.getDevices(CL_DEVICE_TYPE_ALL, &all_devices); if(all_devices.size()==0){ std::cout<<" No devices found. Check OpenCL installation!\n"; exit(1); } cl::Device default_device=all_devices[0]; std::cout<< "Using device: "<<default_device.getInfo<CL_DEVICE_NAME>()<<"\n";
Now we need to create a Context. Imagine the Context as the runtime link to the our device and platform:
cl::Context context({default_device});
Next we need to create the program which we want to execute on our device:
cl::Program::Sources sources;
Actual source of our program(kernel) is there:
// kernel calculates for each element C=A+B std::string kernel_code= " void kernel simple_add(global const int* A, global const int* B, global int* C){ " " C[get_global_id(0)]=A[get_global_id(0)]+B[get_global_id(0)]; " " } "; ";This code simply calculates C=A+B. As we want that one thread calculates sum of only one element, we use get_global_id(0). get_global_id(0) means get id of current thread. Id's can go from 0 to get_global_size(0) - 1. get_global_size(0) means number of threads. What is 0? 0 means first dimension. OpenCL supports running kernels on 1D, 2D and 3D problems. We will use 1D array! This means 1D problem.
Next we need our kernel sources to build. We also check for the errors at building:
sources.push_back({kernel_code.c_str(),kernel_code.length()}); cl::Program program(context,sources); if(program.build({default_device})!=CL_SUCCESS){ std::cout<<" Error building: "<<program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(default_device)<<"\n"; exit(1); }For arrays A, B, C we need to allocate the space on the device:
// create buffers on the device cl::Buffer buffer_A(context,CL_MEM_READ_WRITE,sizeof(int)*10); cl::Buffer buffer_B(context,CL_MEM_READ_WRITE,sizeof(int)*10); cl::Buffer buffer_C(context,CL_MEM_READ_WRITE,sizeof(int)*10);Arrays will have 10 element. We want to calculate sum of next arrays (A, B).
int A[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int B[] = {0, 1, 2, 0, 1, 2, 0, 1, 2, 0};We need to copy arrays from A and B to the device. This means that we will copy arrays from the host to the device. Host represents our main. At first we need to create a queue which is the queue to the commands we will send to the our device:
//create queue to which we will push commands for the device. cl::CommandQueue queue(context,default_device);Now we can copy data from arrays A and B to buffer_A and buffer_B which represent memory on the device:
//write arrays A and B to the device queue.enqueueWriteBuffer(buffer_A,CL_TRUE,0,sizeof(int)*10,A); queue.enqueueWriteBuffer(buffer_B,CL_TRUE,0,sizeof(int)*10,B);Now we can run the kernel which in parallel sums A and B and writes to C. We do this with KernelFunctor which runs the kernel on the device. Take a look at the "simple_add" this is the name of our kernel we wrote before. You can see the number 10. This corresponds to number of threads we want to run (our array size is 10):
cl::KernelFunctor simple_add(cl::Kernel(program,"simple_add"),queue,cl::NullRange,cl::NDRange(10),cl::NullRange);Here we actually set the arguments to kernel simple_add and run the kernel:
simple_add(buffer_A, buffer_B, buffer_C);At the end we want to print memory C on our device. At first we need to transfer data from the device to our program (host):
int C[10]; //read result C from the device to array C queue.enqueueReadBuffer(buffer_C,CL_TRUE,0,sizeof(int)*10,C); std::cout<<" result: \n"; for(int i=0;i<10;i++){ std::cout<<C[i]<<" "; } return 0; }
This is it. Complete code is there:
#include <iostream> #include <CL/cl.hpp> int main(){ //get all platforms (drivers) std::vector<cl::Platform> all_platforms; cl::Platform::get(&all_platforms); if(all_platforms.size()==0){ std::cout<<" No platforms found. Check OpenCL installation!\n"; exit(1); } cl::Platform default_platform=all_platforms[0]; std::cout << "Using platform: "<<default_platform.getInfo<CL_PLATFORM_NAME>()<<"\n"; //get default device of the default platform std::vector<cl::Device> all_devices; default_platform.getDevices(CL_DEVICE_TYPE_ALL, &all_devices); if(all_devices.size()==0){ std::cout<<" No devices found. Check OpenCL installation!\n"; exit(1); } cl::Device default_device=all_devices[0]; std::cout<< "Using device: "<<default_device.getInfo<CL_DEVICE_NAME>()<<"\n"; cl::Context context({default_device}); cl::Program::Sources sources; // kernel calculates for each element C=A+B std::string kernel_code= " void kernel simple_add(global const int* A, global const int* B, global int* C){ " " C[get_global_id(0)]=A[get_global_id(0)]+B[get_global_id(0)]; " " } "; sources.push_back({kernel_code.c_str(),kernel_code.length()}); cl::Program program(context,sources); if(program.build({default_device})!=CL_SUCCESS){ std::cout<<" Error building: "<<program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(default_device)<<"\n"; exit(1); } // create buffers on the device cl::Buffer buffer_A(context,CL_MEM_READ_WRITE,sizeof(int)*10); cl::Buffer buffer_B(context,CL_MEM_READ_WRITE,sizeof(int)*10); cl::Buffer buffer_C(context,CL_MEM_READ_WRITE,sizeof(int)*10); int A[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int B[] = {0, 1, 2, 0, 1, 2, 0, 1, 2, 0}; //create queue to which we will push commands for the device. cl::CommandQueue queue(context,default_device); //write arrays A and B to the device queue.enqueueWriteBuffer(buffer_A,CL_TRUE,0,sizeof(int)*10,A); queue.enqueueWriteBuffer(buffer_B,CL_TRUE,0,sizeof(int)*10,B); //run the kernel cl::KernelFunctor simple_add(cl::Kernel(program,"simple_add"),queue,cl::NullRange,cl::NDRange(10),cl::NullRange); simple_add(buffer_A,buffer_B,buffer_C); //alternative way to run the kernel /*cl::Kernel kernel_add=cl::Kernel(program,"simple_add"); kernel_add.setArg(0,buffer_A); kernel_add.setArg(1,buffer_B); kernel_add.setArg(2,buffer_C); queue.enqueueNDRangeKernel(kernel_add,cl::NullRange,cl::NDRange(10),cl::NullRange); queue.finish();*/ int C[10]; //read result C from the device to array C queue.enqueueReadBuffer(buffer_C,CL_TRUE,0,sizeof(int)*10,C); std::cout<<" result: \n"; for(int i=0;i<10;i++){ std::cout<<C[i]<<" "; } return 0; }
Hi,
ReplyDeletethanks for the tutorial.
To make it work with OpenCL 1.2 and corresponding cl.hpp:
//run the kernel
//cl 1.1
//cl::KernelFunctor simple_add(cl::Kernel(program,"simple_add"),queue,cl::NullRange,cl::NDRange(10),cl::NullRange);
//simple_add(buffer_A,buffer_B,buffer_C);
//cl 1.2
cl::make_kernel simple_add(cl::Kernel(program,"simple_add"));
cl::EnqueueArgs eargs(queue,cl::NullRange,cl::NDRange(10),cl::NullRange);
simple_add(eargs, buffer_A,buffer_B,buffer_C).wait();
This comment has been removed by the author.
Deletecl::make_kernel needs template arguments, but I think anything between angle brackets gets eaten, which is probably why stéphane's code came out looking wrong. In this example, they need to be cl::Buffer& repeated three times (two input buffers, one output buffer).
DeleteSorry, too lazy to figure out the mark-up for embedded code.
//run the kernel
Deleteauto simple_add = cl::make_kernel(program, "simple_add");
cl::EnqueueArgs eargs(queue,cl::NullRange,cl::NDRange(10),cl::NullRange);
simple_add(eargs, buffer_A,buffer_B,buffer_C).wait();
Overwrite line 61-62 with this for opencl 1.2 works.
Thanks a lot!! This was extremely helpful
DeleteHi, I use opencl 2.1 and I replaced line 61-62 with:
Deletecl::make_kernel simple_add(cl::Kernel(program, "simple_add"));
cl::EnqueueArgs eargs(queue, cl::NullRange, cl::NDRange(10), cl::NullRange);
simple_add(eargs, buffer_A, buffer_B, buffer_C).wait();
Note that different from cl1.2, the cl::make_kernel is a class template, so there follows "".
For OpenCL 1.2, use the "Alternative Way" to run the kernel given in the complete code example of the original tutorial:
Deletecl::Kernel kernel_add=cl::Kernel(program,"simple_add"); kernel_add.setArg(0,buffer_A);
kernel_add.setArg(1,buffer_B);
kernel_add.setArg(2,buffer_C);
queue.enqueueNDRangeKernel(kernel_add,cl::NullRange,cl::NDRange(10),cl::NullRange);
queue.finish();
Also, define the macro CL_USE_DEPRECATED_OPENCL_1_2_APIS at the beginning of your code:
#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
(The other methods above require class template arguments)
Wow a very concise and easy to understand example. Thank you!
ReplyDeleteit is possible to bind C code or embedded C Code ..???
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThank you for this tutorial. Unfortunately there is a problem using it with the current NVIDIA OpenCL ICD (the library that dispatches API calls to the appropriate driver), which is a missing function in the context of cl::Device. You can fix this by placing
ReplyDelete#define CL_USE_DEPRECATED_OPENCL_1_1_APIS
#include iostream
#include CL/cl.h
#undef CL_VERSION_1_2
#include CL/cl.hpp
where filenames need to be embraced by < and >, at the very beginning.
Very helpful introduction to OpenCL, thank you!
ReplyDeleteSeveral errors occur when running this code. Where can be a problem? Thanks in advance.
ReplyDeleteError 1 error C2661: 'std::vector<_Ty>::push_back' : no overloaded function takes 2 arguments c:\xxxx\sumadd.cpp 34
Error 2 error C2664: 'cl_int cl::Program::build(const std::vector<_Ty> &,const char *,void (__stdcall *)(cl_program,void *),void *) const' : cannot convert parameter 1 from 'cl::Device' to 'const std::vector<_Ty> &' c:\xxxx\sumadd.cpp 37
3 IntelliSense: no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=std::pair, _Alloc=std::allocator>]" matches the argument list
argument types are: (const char *, size_t)
object type is: cl::Program::Sources c:\xxxx\SumAdd.cpp 34
4 IntelliSense: no instance of overloaded function "cl::Program::build" matches the argument list
argument types are: (cl::Device)
object type is: cl::Program c:\xxxx\SumAdd.cpp 37
This comment has been removed by the author.
Delete// add to the top
Delete#include < vector > (without the spaces)
Does OpenCL have any trait associated with it that would allow me to use a Macro to determine if OpenCL is available or not through my C++ code?
ReplyDeleteEg.
#ifdef OPENCL
Great blog ! Keep writing !
ReplyDeleteI followed this example and I am now able to debug my open cl program! (in a crude way by writing values to a buffer... but it works!)
ReplyDeletethanks, great post
Thanks for sharing this useful information. Keep up the good work
ReplyDeleteDevOps Online Training
Thanks you for sharing this unique useful information content with us.
ReplyDeleteDatastage Online Training
It is wonderful. I was able to run the whole code with little tweeks with Visual Studio 2015. Thanks :)
ReplyDeleteI am obliged to you for sharing this piece of information here and updating us with your resourceful guidance. Hope this might benefit many learners. Keep sharing this gainful articles and continue updating us.
ReplyDeleteAWS Training in Chennai
DevOps Training in Chennai
CCNA Course in Chennai
RPA Training in Chennai
Pyhton Training in Chennai
R Programming Training in Chennai
Angularjs Training in Chennai
The blog is delightful...and useful for us... thank you for your blog.
ReplyDeleteHacking Course in Coimbatore
ethical hacking training in coimbatore
ethical hacking course in bangalore
ethical hacking institute in bangalore
Tally course in Madurai
Software Testing Course in Coimbatore
Spoken English Class in Coimbatore
Web Designing Course in Coimbatore
Tally Course in Coimbatore
Tally Training Coimbatore
Blog is very great thanks for sharing
ReplyDeleteR programming training institute in chennai
c language sample codes
ReplyDeletec small program - Show string difference, distance
Really useful information. Thank you so much for sharing.It will help everyone.Keep posting.
ReplyDeleteoneplus service centre
oneplus mobile service center in chennai
oneplus mobile service center
oneplus mobile service centre in chennai
oneplus mobile service centre
oneplus service center near me
oneplus service
oneplus service centres in chennai
oneplus service center velachery
oneplus service center in vadapalani
Outstanding blog thanks for sharing such wonderful blog with us ,after long time came across such knowlegeble blog.
ReplyDeleteR Training Institute in Chennai | R Programming Training in Chennai
Nice Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.
ReplyDeleteCheck out : hadoop training in Chennai
big data training in chennai
big data hadoop training in chennai
big data training and placement in chennai
I get an error when building:
ReplyDelete\main.cpp|38|error: no matching function for call to 'cl::Program::build()'|
Kursus HP iPhoneAppleLes PrivateVivo
ReplyDeleteKursus Service HP Bandar LampungKursus Service HP Bandar LampungServis HPServis HPwww.lampungservice.com
I gathered lots of information from your blog and it helped me a lot. Keep posting more.
ReplyDeleteMachine Learning Training in Chennai
Machine Learning course in Chennai
Data Science Training in Chennai
Data Analytics Training in Chennai
Data Science Certification in Chennai
Data Science Training in Velachery
Machine Learning course in Chennai
I tried out and it seems to work. But it is not faster then calculating with CPU, even with 1000000 additions. What is wrong?
ReplyDeleteRolf
Outstanding blog!!! Thanks for sharing with us...
ReplyDeleteIELTS Coaching in Coimbatore
ielts Coaching center in coimbatore
RPA training in bangalore
Selenium Training in Bangalore
Oracle Training in Coimbatore
PHP Training in Coimbatore
Thanks for this blog. It is more Interesting...
ReplyDeleteCCNA Course in Coimbatore
CCNA Course in Coimbatore With Placement
CCNA Course in Madurai
Best CCNA Institute in Madurai
Java Training in Bangalore
Python Training in Bangalore
IELTS Coaching in Madurai
IELTS Coaching in Coimbatore
Java Training in Coimbatore
Good job and great informative blog.
ReplyDeleteJapanese Classes in Chennai
Japanese Course in Chennai
Best Spoken English Classes in Chennai
French Language Classes in Chennai
pearson vue exam centers in chennai
German Classes in Chennai
Japanese Classes in Tnagar
Japanese Classes in OMR
French Classes in anna nagar
spoken english in anna nagar
thanks for sharing this useful message
ReplyDeletebest hadoop training in chennai
best hadoop training in omr
hadoop training in sholinganallur
best java training in chennai
best python training in chennai
selenium training in chennai
selenium training in omr
selenium training in sholinganallur
Phối chó bull pháp
ReplyDeletePhối giống chó Corgi
Phối chó Pug
Phối giống chó alaska
thanks for sharing this message its useful to us
ReplyDeletebest hadoop training in chennai
best hadoop training in omr
hadoop training in sholinganallur
best java training in chennai
best python training in chennai
selenium training in chennai
selenium training in omr
selenium training in sholinganallur
Thanks for this blog. It is more Interesting...
ReplyDeleteC++ Techniques
thanks for sharing this information
ReplyDeletebest devops training in chennai
best hadoop training in chennai
best hadoop training in omr
hadoop training in sholinganallur
best java training in chennai
best python training in chennai
I feel this article have given such a lot of vital info for me. And I am satisfied studying your article. However wanna commentary on few general things, The website style is ideal, the articles are truly nice.
ReplyDeleteInterior Designers in Chennai | Interior Decorators in Chennai | Best Interior Designers in Chennai | Home Interior designers in Chennai | Modular Kitchen in Chennai
nice explanation, thanks for sharing, it is very informative
ReplyDeletetop 100 machine learning interview questions
top 100 machine learning interview questions and answers
Machine learning interview questions
Machine learning job interview questions
Machine learning interview questions techtutorial
Machine learning job interview questions and answers
Machine learning interview questions and answers online
Machine learning interview questions and answers for freshers
interview question for machine learning
machine learning interview questions and answers
The blog which you have shared is more impressive... Thanks for sharing with us...
ReplyDeleteSEO Training in Chennai
SEO Course in Chennai
SEO Training
seo course
SEO training in Anna nagar
SEO training in vadapalani
Android training in Chennai
Python Training in Chennai
Big data training in chennai
JAVA Training in Chennai
<a href="https://vidmate.vin/
ReplyDeleteget free apps on 9apps
ReplyDeleteGreat blog....Thanks for sharing informative message .
ReplyDeletePython training in Chennai/
Python training in OMR/
Python training in Velachery/
Python certification training in Chennai/
Python training fees in Chennai/
Python training with placement in Chennai/
Python training in Chennai with Placement/
Python course in Chennai/
Python Certification course in Chennai/
Python online training in Chennai/
Python training in Chennai Quora/
Best Python Training in Chennai/
Best Python training in OMR/
Best Python training in Velachery/
Best Python course in Chennai/
Hello, thenks for this example. Building success, but when I run this progrum ? I have an incorrect result, like result:
ReplyDelete-858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460
Help please, what the problem?
bigcommerce quickbooks integration
ReplyDeleteYou have provided a nice article, Thank you very much for this one. And I hope this will be useful for many people. And I am waiting for your next post keep on updating these kinds of knowledgeable things
ReplyDeleteAndroid App Development Course in Chennai
Android Development Course in Bangalore
App Development Course in Coimbatore
Mobile Application Development Course in Coimbatore
ReplyDeleteThanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
best microservices online training
Great share. Hands on basic make master in programming. Start with basic to job oriented training in Nagpur.
ReplyDelete-----------------------------------------------
Webgurukul IT Training & Placement Institute
Hello Admin!
ReplyDeleteThanks for the post. It was very interesting and meaningful. I really appreciate it! Keep updating stuffs like this. If you are looking for the Advertising Agency in Chennai / Printing in Chennai , Visit us now..
I believe there are many more pleasurable opportunities ahead for individuals that looked at your site.
ReplyDeleteAws training chennai | AWS course in chennai
Rpa training in chennai | RPA training course chennai
sas training in chennai | sas training class in chennai
i found this article more informative, thanks for sharing this article!
ReplyDeleteshowbox
showbox for pc
Great Article. Thank-you for such useful information. I have read many of your post and this post is wonderful....
ReplyDeletehttp://pihmct.com/
Best hotel management college
Top hotel management college
Best hotel management college near me
diploma in hotel management
Best hotel management institute
Best institute for hotel management
Get trained by professional and build your career in top Multi-national companies.
Very nice post sir really good
ReplyDeleteplay bazaar Delhi
satta patta matka
ipl 2020
Best tutorial blog share.
ReplyDeleteGet job based , live project IT course training in Nagpur.
Search more here: PHP Classes in Nagpur - Web Designing Classes in Nagpur
I find this blog to be very interesting and very resourceful. I would say that your blogs are really interesting and informative for me and this article explained everything in detail.
ReplyDeleteBest pathology in lucknow
Best pathology in jankipuram
Diagnostic centre in lucknow
X-ray pathology in jankipuram
Best diagnostic centre in lucknow
Pathology centre in jankipuram
ReplyDeleteGreat sharing article, I like to visit your website
free software download
Great, keep posting more.
ReplyDeleteglobalemployees
globalemployees
globalemployees
BSc Cardio Vascular Technology is one of the best demanding courses in recent times. Here you can check the all details of this course and the best college to study in Bangalore for this course. Just click the below mentioned link.
ReplyDeleteBSc Cardiac Care Technology Colleges In Bangalore
League Of Legends 10.1 Yama Notları
ReplyDeleteE Spor
League Of Legends
lol oynanış videoları
Karakter Tanıtımı
League Of Legends Counterlar
lol Counterlar
vayne ct
lucian ct
sylas ct
aphelios ct
Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.
ReplyDeletedata analytics courses
data science interview questions
Learned a lot of new things in this post. This post gives a piece of excellent information.
ReplyDeletePHP Training in Chennai
PHP Training in bangalore
PHP Training in Coimbatore
PHP Course in Madurai
PHP Course in Bangalore
PHP Training Institute in Bangalore
PHP Classes in Bangalore
Best PHP Training Institute in Bangalore
spoken english classes in bangalore
Data Science Courses in Bangalore
Both are really great. But its purely related to your taste. I prefer pursuing a degree in computer science and start learning digital marketing.
ReplyDeleteExcelR Digital Marketing Courses In Bangalore
Very impressive blog. Thanks for sharing.
ReplyDeletepython online course
data science training
Aws online training
full stack developer course
digital marketing institute in Hyderabad
selenium training
wonderful blog.
ReplyDeletedigital marketing course
I am inspired with your post writing style & how continuously you describe this topic on software testing tutorial . After reading your post, thanks for taking the time to discuss this, I feel happy about it and I love learning more about this topic.
ReplyDeleteThis is a wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck... Thank you!!! digital marketing courses in Bangalore
ReplyDeleteAwesome article, it was exceptionally helpful! I simply began in this and I'm becoming more acquainted with it better. The post is written in very a good manner and it contains many useful information for me. Thank you very much and will look for more postings from you.
ReplyDeletedigital marketing blog
digital marketing bloggers
digital marketing blogs
digital marketing blogs in india
digital marketing blog 2020
digital marketing blog sites
skartec's digital marketing blog
skartec's blog
digital marketing course
digital marketing course in chennai
digital marketing training
skartec digital marketing academy
Thanks for Sharing This Article.It is very so much valuable content. I hope these Commenting lists will help to my website
ReplyDeleteservicenow online training
best servicenow online training
top servicenow online training
Are you looking for play bazaar were you get the latest satta result.
ReplyDeleteI can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business.satta king
ReplyDeleteWith the help of creative designing team TSS advertising company provides different branding and marketing strategies in advertising industry...
ReplyDeletehttps://www.tss-adv.com/branding-and-marketing
I grow to be greater than satisfied to find this fantastic website on line. I need to to thanks in your time because of this first-rate look at!! I truly cherished each bit of it and I have you ever ever bookmarked to look new facts for yourwebsite.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteAwesome blog, I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the
ReplyDeletegood work!.data analytics courses
shabe barat
ReplyDeleteShab E Baraat When the 7th month of the
Islamic calendar Rajab ends, the 8th month of the lunar calendar begins, this month is referred to as Shabaan.
The importance, it is believed, lies with the 15th night of this month. shab e barat ki nafil namaz in
hindi, shab e barat ki namaz,
shab e barat namaz, shab e barat namaz niyat, shab e barat namaz rakats, shab e barat quotes,
shabe barat ki namaz, shabe barat namaz, shab e barat 2020, shab e barat in india
shab e barat dua, shab e barat nafil namaj
--------------------------------------------------------------------
Ramadan Kareem
Wishes, Quotes, Greetings ? Then, this collection of Ramadan wishes and Ramadan Mubarak
messages is for you. Here, you’ll find inspirational Ramadan Mubarak greetings that are hoping your
recipient to have a blessed celebration of Ramadan. happy ramadan, happy ramadan wishes, happy ramzan,
ramadan greetings, ramadan greetings in English, ramadan, kareem quotes, ramadan kareem wishes, ramadan wishes, ramzan quotes, ramzan. Ramadan calendar 2020, ramadan 2020 calendar, Ramadan mubarak 2020
Thanks all
Kudos for delivering such an informative post. Have understood a lot from this concept. Gonna follow your updates from now on.
ReplyDeleteMachine Learning Training In Hyderabad
Thanks for giving great kind of information. So useful and practical for me. Thanks for your excellent blog, nice work keep it up thanks for sharing the knowledge. | Home lifts
ReplyDeleteUseful information. Home lifts
ReplyDeletethanks for valuable information.
ReplyDeleteGreat post i must say and thanks for the information. Education is definitely a sticky subject. However, is still among the leading topics of our time. I appreciate your post and look forward to more.
ReplyDeletedata analytics courses in mumbai
Thanks for sharing this informations.
ReplyDeleteCCNA Course in Coimbatore
CCNA Training Institute in Coimbatore
Java training in coimbatore
Selenium Training in Coimbatore
Software Testing Course in Coimbatore
android training institutes in coimbatore
Thanks for sharing this informatiions.
ReplyDeleteartificial intelligence training in coimbatore
Blue prism training in coimbatore
RPA Course in coimbatore
C and C++ training in coimbatore
big data training in coimbatore
hadoop training in coimbatore
aws training in coimbatore
Thanks for sharing this blog..creative writing..Appreciate your efforts.
ReplyDeletedigital marketing training
digital marketing training in chennai BITA Academy
digital marketing in chennai
digital marketing course in chennai
digital marketing certification
digital marketing course training in omr
digital marketing course training in velachery
digital marketing training and placement
digital marketing courses with placement
digital marketing course with job placement
digital marketing institute in chennai
digital marketing certification course in chennai
digital marketing course training in chennai
digital marketing course in chennai with placement
thanks for sharing nice information. its Very use full and informative and keep sharing.
ReplyDeletemore : https://www.analyticspath.com/machine-learning-training-in-hyderabad
I am totally impressed on your blog post!!! It is important to write engaging and well optimized content to be search engine and use friendly.
ReplyDeleteDigital Marketing Training Course in Chennai | Digital Marketing Training Course in Anna Nagar | Digital Marketing Training Course in OMR | Digital Marketing Training Course in Porur | Digital Marketing Training Course in Tambaram | Digital Marketing Training Course in Velachery
Online android course
ReplyDeletePython Training in Coimbatore
ReplyDeletePython course in Coimbatore
Java Training in Coimbatore
Java course in Coimbatore
Digital Marketing Training in Coimbatore
Digital Marketing course in Coimbatore
Machine Learning Training in Coimbatore
Machine Learning course in Coimbatore
Datascience course in Coimbatore
Datascience training in Coimbatore
internship training in Coimbatore
internship in Coimbatore
inplant training in Coimbatore
Amazing post, Thank you for presenting a wide variety of information that is very interesting to see in this article. Visit our website
ReplyDeleteHome elevators UAE
Home elevators Malaysia
Home lifts Melbourne
Home lifts
great post. thank you.
ReplyDeleteautomatic gates
vacuum elevators
Thanks a lot very much for the high your blog post quality and results-oriented help. I won’t think twice to endorse to anybody who wants and needs support about this area.
ReplyDeleteRobotic Process Automation (RPA) Training in Chennai | Robotic Process Automation (RPA) Training in anna nagar | Robotic Process Automation (RPA) Training in omr | Robotic Process Automation (RPA) Training in porur | Robotic Process Automation (RPA) Training in tambaram | Robotic Process Automation (RPA) Training in velachery
The basic intention behind playing Satta is to become rich within a short span and efforts. Well! It is a wonderful idea and highly appreciated as above 90% of participants get success in their first attempt only. However, play this lottery or game online or offline in an accurate way is a significant factor to win this game. Thus, you have to learn the rules and regulations associated with playing this game in a tactful manner. Briefly, you have to learn those skills and tactics that will make you win in this game.. Read more- Satta bazar
ReplyDeleteI was just browsing through the internet looking for some information and came across your blog. I am impressed by the information that you have on this blog. It shows how well you understand this subject. Bookmarked this page, will come back for more....bangalore digital marketing course
ReplyDeleteonline Android course
ReplyDeleteI was just browsing through the internet looking for some information and came across your blog. I am impressed by the information that you have on this blog. It shows how well you understand this subject. Bookmarked this page, will come back for more....data science courses
ReplyDeletenice post
ReplyDeleteNice Article..Thanks for sharing it.Appreciate your efforts in making it..
ReplyDeletedigital marketing training
digital marketing training in chennai BITA Academy
digital marketing in chennai
digital marketing course in chennai
digital marketing certification
digital marketing course training in omr
digital marketing course training in velachery
digital marketing training and placement
digital marketing courses with placement
digital marketing course with job placement
digital marketing institute in chennai
digital marketing certification course in chennai
digital marketing course training in chennai
digital marketing course in chennai with placement
ReplyDeleteWell Explained Content thanks For Sharing The Information With Us
Best Data Science Training Institute in Hyderabad
Data Science Course Training in Hyderabad
Education is definitely a sticky subject. it is still among the leading topics of our time Seo company london.
ReplyDeleteThank your valuable content.we are very thankful to you.one of the recommended blog.which is very useful to new learners and professionals.content is very useful for hadoop learners
ReplyDeleteRobotic Process Automation (RPA) Training in Chennai | Robotic Process Automation (RPA) Training in anna nagar | Robotic Process Automation (RPA) Training in omr | Robotic Process Automation (RPA) Training in porur | Robotic Process Automation (RPA) Training in tambaram | Robotic Process Automation (RPA) Training in velachery
ReplyDeletefantastic article thanks for sharing, I appereciate your work
Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!
ReplyDeleteData Science Training in Bangalore
Forex Signals, MT4 and MT5 Indicators, Strategies, Expert Advisors, Forex News, Technical Analysis and Trade Updates in the FOREX IN WORLD
ReplyDeleteForex Signals Forex Strategies Forex Indicators Forex News Forex World
Fantastic blog extremely good well enjoyed with the incredible informative content which surely activates the learners to gain the enough knowledge. Which in turn makes the readers to explore themselves and involve deeply in to the subject. Wish you to dispatch the similar content successively in future as well.
ReplyDelete360DigiTMG Digital Marketing Course
Thanks For Sharing The Information The Information Shared Is Very Valuable Please Keep Updating Us
ReplyDeleteBy Cognex
AWS Training in Chennai
Really great post admin thanks for sharing this.
ReplyDeleteJioTV live for PC
Vivavideo for PC Download
Cartoon HD for PC Apk
Jio Fiber Register
Snapseed for PC
Whatsapp for laptop
Get more Detail on Python Training in Surat
ReplyDeleteShield Security Solutions Offers Security Guard License Training across the province of Ontario. Get Started Today!
ReplyDeleteSecurity Guard License | Security License | Ontario Security license | Security License Ontario | Ontario Security Guard License | Security Guard License Ontario
ReplyDeletefantastic article thanks for sharing, I appereciate your work
Excellent post..Thank you so much for sharing this information...
ReplyDeleteCatia centre in coimbatore | Catia course in coimbatore | Catia course fees in coimbatore | Catia course training in coimbatore | Best Catia course in coimbatore | Catia course training with placement in coimbatore | Catia online training course in coimbatore | Catia online course in coimbatore | Catia fees structure in coimbatore | Catia jobs in coimbatore | Catia training in coimbatore | Cadd centre in coimbatore | Caadd course in coimbatore | Cadd centre fees structure in coimbatore
fantastic article thanks for sharing, I appereciate your work
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThis blog is the general information for the feature. You got a good work for these blog.We have a developing our creative content of this mind.Thank you for this blog. This for very interesting and useful.
ReplyDeleteDigital Marketing Training in Chennai
Digital Marketing Training in Bangalore
Digital Marketing Training in Delhi
Digital Marketing Online Training
ReplyDeleteFantastic informative article! I'm basically getting willing to over this advice, is quite beneficial my own friend.
Cyber Security Course In Bangalore
Hey, Nice one information
ReplyDeleteOnline IT Software Courses Training ICT South Bopal - Ahmedabad, India
Institute of Computer Training - ICT Bopal
KMRSoft
ReplyDeleteService Now Training
MS CRM Online Training
free sex
ReplyDeleteI want to say thanks to you. I have bookmark your site for future updates. Oregon Business Registryv
ReplyDeleteit is a simple start Roblox Robux
ReplyDeletevery good info and product Speechelo Review
ReplyDeletegreat and amazing spotify codes
ReplyDeletebest and amazing post playstation codes
ReplyDeleteNice post!
ReplyDeleteWorried About QuickBooks Error ?Get in touch with QuickBooks expert for instant solution.
Click Here to know how to fix QuickBooks Error 8007
Dial on QuickBooks Error Phone Number +1-855-977-7463.
thanks you Gift Cards 2021
ReplyDeletedo check for itunes code
ReplyDeletethis is what i got walmart code
ReplyDeleteHi there, I found your blog via Google while searching for such kinda informative post and your post looks very interesting for me
ReplyDeleteDigital Marketing Training Institutes in Hyderabad
do not miss the amazon codes
ReplyDeleteVery educating story, saved your site for hopes to read more! ExcelR Data Analytics Courses
ReplyDeletelove to see pokemon go codes
ReplyDeletegood post and do check for walmart gift card
ReplyDeleteGood One..netflix codes
ReplyDeletemust see the among us
ReplyDeleteThanks for your marvelous posting! I really enjoyed reading it, you happen to be a great author. I will remember to bookmark your blog and may come back in the foreseeable future.
ReplyDeleteI want to encourage that you continue your great writing, have a nice evening!
Read More:-
Satta King
Aivivu chuyên vé máy bay, tham khảo
ReplyDeletevé máy bay đi Mỹ
hướng dẫn đi máy bay từ mỹ về việt nam
Vé máy bay từ Nhật Bản về Việt Nam
đăng ký bay từ canada về Việt Nam
Samsung mobile phone is a very popular mobile company not only in Bangladesh but also all over the world. But its price is so high. When you are searching for a brand new mobile phone & it becomes hard. Then you can find a Samsung second hand mobile price in bangladesh for your urgency.
ReplyDeleteThis is the correct site for every individual who might want to get some answers concerning this point. You understand such a lot of its practically intense to contend with you (not that I really would need to… HaHa).live You certainly put a new turn on a theme which has been talked about for a very long time. Awesome stuff, simply extraordinary!
ReplyDeleteNice Blog !
ReplyDeleteQuickBooks Error 248 can occur when a user tries to run payroll for the employees. You may also encounter this issue when you are taking a backup of your company file.call us and get the best possible solutions to resolve QuickBooks Error 248.
ReplyDeleteI see some amazingly important and kept up to length of your strength searching for in your on the site
Digital Marketing Training Institutes in Hyderabad
ReplyDeleteWhat an amazing post admin really great post thanks for this.
viva video for laptop
viva video lite for PC
snapseed for Mac PC
how to change background color using snapseed
play stored for PC download
cam scanner apk for PC
Your blog is very nice and has sets of the fantastic piece of information. Thanks for sharing with us. If you face any technical issue or error, visit:
ReplyDeleteQuickbooks customer service
Thanks for this wonderful content, I really appreciate the same.
ReplyDeleteIf you are looking for best water and amusement park located in the heart of beautiful City- Lucknow,then visit
Best Water Park in Lucknow
Best water park in Uttar Pradesh
Best hotel for destination wedding in Lucknow
Nice blog!! Thanks for sharing. Spoken english classes in chennai | spoken english training in chennai
ReplyDeleteInformative blog
ReplyDeletehttps://360digitmg.com/india/data-science-using-python-and-r-programming-in-patna
Very informative blog and valuable article thanks for sharing with us, keep posting more and share about aws.
ReplyDeleteby cognexAWS Training in chennai
Very Good Article Get instant & Latest Updated Satta King result of Satta King Gali Result Faridabad Result Ghaziabad Result, Desawar Result , Panihari satta result, aghori satta Result And Many More Result Go Through bhutni Satta King .We are Provide fast And 100% Accurate Results.
ReplyDeleteI read this blog post and this blog post is one of the best blog post, so keep more post for sharing. Primavera Course in Chennai | primavera online training
ReplyDeleteVERY HELPFULL POST
ReplyDeleteTHANKS FOR SHARING
Mern Stack Training in Delhi
Advance Excel Training in Delhi
Artificial intelligence Training in Delhi
Machine Learning Training in Delhi
VBA PROGRAMING TRAINING IN DELHI
Data Analytics Training in Delhi
SASVBA
GMB
FOR MORE INFO:
ReplyDeleteThis is good site and nice point of view.I learnt lots of useful information
Ethical Hacking Course in Tambaram
Ethical Hacking Course in Anna Nagar
Ethical Hacking Course in T Nagar
Ethical Hacking Course in Porur
Ethical Hacking Course in OMR
This Information Very Helpful to everyone
ReplyDeleteAndroid Training in Tambaram
Android Training in Anna Nagar
Android Training in Velachery
Android Training in T Nagar
Android Training in Porur
Android Training in OMR
Android Training in Chennai
fantastic article thanks for sharing, I appereciate your work
ReplyDeleteThis post is really nice and informative. The explanation given is really comprehensive and informative.
ReplyDeleteIOS Training
Web Designing course in Chennai
Salesforce CRM Training in Chennai
Salesforce CRM Training
Great experience for me by reading this blog. Thank you for the wonderful article.
ReplyDeleteRPA Training in Tambaram
RPA Training in Anna Nagar
RPA Training in Velachery
RPA Training in T nagar
RPA training in Porur
RPA Training in OMR
RPA Training in Chennai
BEST GAMES HERE OCEANOFGAMES
ReplyDeletefantastic article thanks for sharing, I appereciate your work
ReplyDeleteI was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoy every little bit of it and I have you bookmarked to check out new stuff you post.
ReplyDeletebusiness analytics course
Nice blog was really feeling good to read it. Thanks for this information.
ReplyDeleteDigital Marketing Course in Tambaram
Digital Marketing Course in Anna Nagar
Digital Marketing Course in velachery
Digital Marketing Course in T Nagar
Digital Marketing Course in OMR
Digital Marketing Course in Chennai
Very good info. Lucky me I discovered your site by chance (stumbleupon). I have saved it for later! Here is my web site:sattaking
ReplyDelete"Valuable one...thanks for sharing..
ReplyDeletegraphic design courses in tambaram
graphic design courses in Porur
graphic design courses in Chennai
Your efforts are much appreciated. Nobody will be able to look at you without admiring you. Many thanks for sharing.
ReplyDeletedigital marketing training in hyderabad
digital marketing course in ameerpet
digital marketing course training in hyderabad ameerpet
digital marketing online training in hyderabad
digital marketing course in hyderabad
digital marketing course training in hyderabad
digital marketing course with internship in hyderabad
coin haber - koin haber - kripto para haberleri - coin haber - instagram video indir - instagram takipçi satın al - instagram takipçi satın al - tiktok takipçi satın al - instagram takipçi satın al - instagram takipçi satın al - instagram takipçi satın al - instagram takipçi satın al - instagram takipçi satın al - binance güvenilir mi - binance güvenilir mi - binance güvenilir mi - binance güvenilir mi - instagram beğeni satın al - instagram beğeni satın al - google haritalara yer ekleme - btcturk güvenilir mi - binance hesap açma - kuşadası kiralık villa - tiktok izlenme satın al - instagram takipçi satın al - sms onay - paribu sahibi - binance sahibi - btcturk sahibi - paribu ne zaman kuruldu - binance ne zaman kuruldu - btcturk ne zaman kuruldu - youtube izlenme satın al - torrent oyun - google haritalara yer ekleme - altyapısız internet - bedava internet - no deposit bonus forex - erkek spor ayakkabı - tiktok jeton hilesi - tiktok beğeni satın al - microsoft word indir - misli indir - instagram takipçi satın al
ReplyDeleteAWS Training in Chennai
ReplyDeleteAWS Classes in Chennai
Thanks for Sharing. Python Training in Chennai | Python Course in Chennai
ReplyDeleteDigital Marketing, Digital Marketing Online Training, Digital Marketing Training Programs, Women Entrepreneurship, Women Entrepreneurship Training Programs, Digital marketing online video course, Women Entrepreneurship Online Certification Course, Business coaching, Training for Business owners, Business coaching for women, young entrepreneurs training
ReplyDeletehttps://www.eminentdigitalacademy.com/
ReplyDeleteThis is, in my opinion, one of the most crucial pieces of information. And I'm delighted I'm enjoying reading your content.
digital marketing training in hyderabad
digital marketing course in ameerpet
digital marketing course training in hyderabad ameerpet
http://sattamatkatips.org/
ReplyDeleteWriting in style and getting good compliments on the article is hard enough, to be honest, but you did it so calmly and with such a great feeling and got the job done. This item is owned with style and I give it a nice compliment. Better!
ReplyDeleteBest Data Science Courses in Bangalore
This blog is just awesome, I have bookmarked it for future also. Here I am sahring some other awesome blogs list.
ReplyDeletemaking a murderer season 3
best apps for galaxy watch
silicon nerd reviews
how to gameshare on xbox
google drive processing video
why does dolly parton wear gloves
best android anti theft app
fiverr impressions
Thanks
Hey! Lovely blog. Your blog contains all the details and information related to the topic. In case you are a QuickBooks user, here is good news for you. You may encounter any error like QuickBooks Error, visit at QuickBooks Customer Service Phone Number for quick help.
ReplyDeleteWe are really grateful for your blog post. You will find a lot of approaches after visiting your post. Great work
ReplyDeletedata science training
Thanks for posting! I really like what you've acquired here; You should keep it up forever!Private tutor Georgetown Best of luck
ReplyDeleteThanks for this post...This Best C++ CourseBest C++ course is one of the most comprehensive and detailed courses on C++ for beginners. It puts learners on a fast track to success by helping them master Modern C++ programming skills within a short time. The course format includes theory and concepts which are then reinforced with live code examples.
ReplyDeleteBest Training Institute in Dubai
Adobe Illustrator Course
Premiere Editing Course
Excellent Blog to read. You have shared useful information. Thank you.
ReplyDeleteBest SEO Course Online
SEO Certification Course
Thanks for posting! I really like what you've acquired here; You should keep it up forever!Private Tutor Pensacola Best of luck
ReplyDeleteThanks for posting! I really like what you've acquired here; You should keep it up forever!Private Tutor WELLESLEY Best of luck
ReplyDeleteHappy to read the informative blog. Thanks for sharing
ReplyDeletebest selenium training center in chennai
best training institute for selenium in chennai
Really thanks for sharing such an useful & informative stuff...
ReplyDeleteBest MicroNutrients Company in India
I used to be able to find good information from your blog posts.The Satta King is the satta king result provider website, Which provide the satta king fast result in Ghaziabad Satta King, Faridabad Satta King, Delhi satta king, Desawar Gali result and many more.
ReplyDeleteBest Satta King Result Site: Satta King
great blog thanks for information
ReplyDeleteSpiritual Gifts Wholesale
kamakshi Lamps
very interesting and informative article. Python Training in Chennai
ReplyDeleteexcellent blog thanks for information
ReplyDeleteDeepam Oil
This Digital Marketing Course in Mohali transforms you into a complete Digital Marketer with expertise in modules like SEO, Social Media Marketing, PPC, Analytics, Content, Mobile, and Email marketing.
ReplyDeleteWe provide the Best training for Social Media Marketing and PPC course in Mohali and have trained over 10k students.
Become industry-ready learning the latest tools, working on real-world projects, and attending Master classes from the Google and Facebook certified Team.
Digital Marketing Course in Chandigarh
Thanks again for the blog article.Really thank you! Want more.
ReplyDeletesatta leak number free
I really want to appreciate the way to write this article. It seems that you are very professional and intelligent on the above topics of writing. I enjoyed reading your article very much.
ReplyDeletesatta leak number free
Thank you so much for your post. Really amazing post.satta king
ReplyDeleteReally good info I always like to read and spread such information which is unique and in fact informative. Keep up the good work.
ReplyDeletesatta king
Good job, this is really useful topic for me.
ReplyDeletesatta king
We have noticed some very good content here and we nice reading. Keep it up.
ReplyDeleteWebsite Development & Digital Marketing agency in London, UK
Our Services:
IT SOLUTIONNYC
Our Website Design Company & Development Services
Shopify Website Design
Social Media Marketing Management
Search Engine Optimization - SEO Packages
Pay Per Click
Digital Marketing
Expert Amazon FBA FBM Wholesale PL Manager
Wonderful illustrated information. I thank you for that. No doubt it will be very useful for my future projects. Would like to see some other posts on the same subject!
ReplyDeletedata science classes in hyderabad
I cannot thank you enough for the blog.Thanks Again. Keep writing.
ReplyDeletenet coure
net training
Thanks again for the article post.Really thank you! Fantastic.
ReplyDeletedot net online training hydarabad
dot net online training india
Thanks for sharing amazing information keep posting!
ReplyDeletemangaowl
Nice blog. Informative and knowledgeable content. Big thumbs up for this blog. I really enjoyed this blog. Thank you for sharing with us.
ReplyDeleteData Science Training in Hyderabad
I really enjoy the article.Thanks Again. Fantastic.
ReplyDeletecore java online course
core java online training
excellent blog thanks for sharing god photos for pooja room
ReplyDeletelakshmi sahasranamavali
photo god
kodi maram
This post is so interactive and informative.keep update more information...
ReplyDeleteSoftware testing Training in Velachery
Software testing training in chennai
Interesting... i think i would bookmark this site. m bout to get busy now but hey! ill come back later
ReplyDeleteAccurate share market tips covering NSE, BSE and MCX. Stock market traders dealing in Indian share market can get Equity tips, future trading tips, nifty tips, options tips and commodity tips from sharetipsinfo for huge returns. Sharetipsinfo assures high returns on low investments.
ReplyDelete